package com.ruoyi.gas.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.gas.domain.GasWarnRectify;
import com.ruoyi.gas.domain.vo.GasEventDetailVo;
import com.ruoyi.gas.domain.vo.IndustryMonthDanger;
import com.ruoyi.gas.domain.vo.MonthWarn;
import com.ruoyi.gas.domain.vo.StreetWarn;

/**
 * 隐患整改详情Service接口
 *
 * @author ruoyi
 * @date 2024-01-18
 */
public interface IGasWarnRectifyService
{
    /**
     * 查询隐患整改详情
     *
     * @param id 隐患整改详情主键
     * @return 隐患整改详情
     */
    public GasWarnRectify selectGasWarnRectifyById(Long id);

    /**
     * 查询隐患整改详情列表
     *
     * @param gasWarnRectify 隐患整改详情
     * @return 隐患整改详情集合
     */
    public List<GasWarnRectify> selectGasWarnRectifyList(GasWarnRectify gasWarnRectify);

    /**
     * 新增隐患整改详情
     *
     * @param gasWarnRectify 隐患整改详情
     * @return 结果
     */
    public int insertGasWarnRectify(GasWarnRectify gasWarnRectify);

    /**
     * 修改隐患整改详情
     *
     * @param gasWarnRectify 隐患整改详情
     * @return 结果
     */
    public int updateGasWarnRectify(GasWarnRectify gasWarnRectify);

    /**
     * 批量删除隐患整改详情
     *
     * @param ids 需要删除的隐患整改详情主键集合
     * @return 结果
     */
    public int deleteGasWarnRectifyByIds(Long[] ids);

    /**
     * 删除隐患整改详情信息
     *
     * @param id 隐患整改详情主键
     * @return 结果
     */
    public int deleteGasWarnRectifyById(Long id);

    /**
     * 获取气体预警趋势
     * @param type 1日 2周 3月 4年
     * @return
     */
    List<Map<String,Integer>> getWarnCountTrend(int type);

    /**
     * 获取大屏顶部预警数量信息
     * @return
     */
    int getWarnCounts();

    /**
     * 获取大屏底部柱状图数据
     * @param type 1月 2周
     * @param form 1排查 2消除
     * @return
     */
    List<Map<String,Integer>> getBottomCount(Integer type,Integer form);

    /**
     * 报警治理情况消除率
     * @return
     */
    int getGovern();

    /**
     * 获取报警治理情况详情
     * @return
     */
    List<Map<String,Object>> getGovernDetail();

    /**
     * 获取预警情况
     * @return
     */
    List<Map<String,Object>> getWarnList();

    /**
     * 查询企业每日预警数量
     * @param companyId 企业id
     * @return
     */
    List<Map<String,Object>> getDailyEventCount(Long companyId);

    /**
     * 查询企业事件数量信息
     * @param companyId
     * @return
     */
    Map<String,Integer> getCompanyWarnCount(Long companyId);

    /**
     * 获取企业大屏底部柱状图数据
     * @param type 1月 2周
     * @param form 1排查 2消除
     * @return
     */
    List<Map<String,Integer>> getCompanyBottom(Long companyId,Integer type,Integer form);

    /**
     * 企业消除率
     * @return
     */
    int getCompanyGovern(Long companyId);

    /**
     * 报警治理情况
     * @param companyId
     * @return
     */
    List<Map<String,Object>> getCompanyGovernDetail(Long companyId);

    /**
     * 获取企业预警情况
     * @return
     */
    List<Map<String,Object>> getCompanyEventList(Long companyId);

    /**
     * 获取安全负责人所在公司的所有安全事件列表
     * @param companyId 安全负责人所在公司id
     * @return
     */
    List<Map<String,Object>> getAllWarnListByHead(Long companyId);

    /**
     * 获取安全事件详情
     * @param id 事件id
     * @return
     */
    List<Map<String,Object>> getWarnDetailById(Long id);

    /**
     * 整改人获取分配给自己的待整改事件
     * @param rectifier 整改人id
     * @return
     */
    List<Map<String,Object>> getWarnListByRectifier(Long rectifier);

    /**
     * 安全负责人获取已整改事件列表
     * @param userId 安全负责人id
     * @return
     */
    List<Map<String,Object>> getAuditWarnList(Long userId);

    /**
     * 安全分责人查看整改记录，查看安全事件详情
     * @param id 事件id
     * @return
     */
    List<Map<String,Object>> getDetailListByWarnId(Long id);

    /**
     * 导出本月各行业隐患排查数据
     * @return
     */
    List<IndustryMonthDanger> selectMonthDangerByIndustry();

    /**
     * 导出本月各行业隐患排查数据(合计)
     * @return
     */
    IndustryMonthDanger selectMonthDangerSumByIndustry();

    /**
     * 导出本月企业预警情况
     * @return
     */
    List<MonthWarn> selectWarnByMonthList();

    /**
     * 导出本月企业预警情况
     * @return
     */
    List<StreetWarn> selectStreetWarnList();
}
